package com.mfl.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtil {
    /**
     * 生成Jwt令牌
     * @param signKey 密钥
     * @param expire 有效时间
     * @param claims Jwt第二部分负载 payload 中存储的内容
     * @return
     */
    public static String createJwt(String signKey, long expire, Map<String, Object> claims){
        return Jwts.builder()
                .addClaims(claims)  // 自定义信息（有效载荷）
                .signWith(SignatureAlgorithm.HS256, signKey)  // 签名算法（头部）
                .setExpiration(new Date(System.currentTimeMillis() + expire)) // 过期时间
                .compact(); // 生成令牌
    }

    /**
     * 解析Jwt令牌
     * @param jwt Jwt令牌
     * @return  返回Jwt第二部分负载 payload 中存储的内容
     */
    public static Claims parseJwt(String signKey, String jwt){
        return Jwts.parser()
                .setSigningKey(signKey) // 指定签名密钥
                .parseClaimsJws(jwt) // 指定令牌Token
                .getBody(); // 返回负载信息
    }
}
